#ifndef GAMEOBJECT_HPP_INCLUDED
#define GAMEOBJECT_HPP_INCLUDED

#include <string>

#include "Utils.hpp"

enum EObjectSize
{
	EOS_MINISCULE, // any per tile
	EOS_SMALL, // 3 per tile
	EOS_MEDIUM, // 1 per tile
	EOS_LARGE // 1 per tile
};

class GameObject
{
public:
    GameObject(std::string name, char shape, Vector2d position, EObjectSize size,
		bool transparent = false, TCODColor fore = TCODColor::white, TCODColor back = TCODColor::black);
    virtual ~GameObject();

	virtual bool isTransparent();

    virtual char getShape();
	
	virtual EObjectSize getSize();

    virtual std::string getName();
	virtual TCODColor getBackColor();
	virtual TCODColor getForeColor();
    virtual Vector2d getPosition();
	
	virtual void setColor(TCODColor fore, TCODColor back);
    virtual void setName(std::string name);
    virtual void setPosition(Vector2d position);
    virtual void setShape(char shape);
	virtual void setSize(EObjectSize size);
	virtual void setTransparent(bool sightBlocking);

protected:
	bool Transparent;

    char Shape;

	EObjectSize Size;

    std::string Name;
	TCODColor Back, Fore;
    Vector2d Position;
};

#endif

